package com.ybu;

import javax.swing.text.Element;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * ArrayList的用法
 *
 *
 * 1.构造函数
 * ---1.
 *
 *
 * 2.成员方法
 * ---1.add（object obj）
 * ---2.add(int index,object obj)
 * ---3.get(int index)
 * ---4.set(int index,object obj)
 * ---5.remove(int index)
 * ---6.size()
 * ---7.isEmpty()
 * ---8.clear()
 * ---9.contains(object obj)
 *----10.获取迭代器
 *
 *
 */

public class ArrayListDemo {
    public  static void main(String[] args){
        ArrayList<String> list = new ArrayList<String>();
        list.add("zhangshan");
        list.add(0, "lisi");
        //获取数据
        String s = list.get(1);
        System.out.println(s);
        //修改数据
        list.set(0,"wangwu");
        list.remove(1);
        System.out.println(list);
        list.add("zhaoliu");
        list.add("lichengzhao");
        list.add("xiachunli");

        System.out.println(list);
        System.out.println("---集合的遍历方法1---");
        //for循环的形式
        for(int i = 0;i<list.size();i++){
            String obj = list.get(i);
            System.out.println(obj);
        }
        System.out.println("---集合的遍历方法2---");
        //增强for循环的形式
        for(String obj : list){
            System.out.println(obj);
        }
        //迭代器的形式
        System.out.println("---集合的遍历方法3---");
        //获取集合的迭代器对象
        Iterator<String>iterator = list.iterator();
        while(iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
        //Lambda表达式的方式
        System.out.println("---集合的遍历方式4---");
        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        list.forEach(consumer);
        System.out.println("---集合的遍历方式4.1---");
        //Lambda表达式,本质就是一个函数对象
        list.forEach(st-> System.out.println(st));
        System.out.println("---集合的遍历方式4.2---");
        //方法引用
        list.forEach(System.out::println);


    }
}
